package com.xm;

public class NumberAndMath04 {
    public static void main(String[] args) {
        // 所有数字类型的包装类都是Number的子类
        System.out.println("---Number类---");
        // 装箱 相当于Integer.valueOf（5）
        Integer x = 5;
        // 拆箱 int t=x，相当于x.intValue（）
        x = x + 10;
        System.out.println(x);

        System.out.println("---Math类---");
        System.out.println("90 度的正弦值：" + Math.sin(Math.PI / 2));
        System.out.println("0度的余弦值：" + Math.cos(0));
        System.out.println("60度的正切值：" + Math.tan(Math.PI / 3));
        System.out.println("1的反正切值： " + Math.atan(1));
        System.out.println("π/2的角度值：" + Math.toDegrees(Math.PI / 2));
        System.out.println(Math.PI);

        System.out.println("---Number & Math 类常用的一些方法---");
        System.out.println("Math类");
        Integer i1 = 120;

        // xxxValue() 方法用于将 Number 对象转换为 xxx 数据类型的值并返回
        System.out.println("xxxValue()方法：" + i1.intValue());

        // 指定参数与参数相等返回0，小于参数返回-1，大于参数返回1
        System.out.println("compareTo()方法：" + i1.compareTo(12));
        System.out.println("compareTo()方法：" + i1.compareTo(121));

        // Number 对象不为 Null，且与方法的参数类型与数值都相等返回 True，否则返回 False。
        System.out.println("equals()方法：" + i1.equals(120));

        // valueOf() 方法用于返回给定参数的原生 Number 对象值，参数可以是原生数据类型, String等。
        Integer i2 = Integer.valueOf(9);
        Double d = Double.valueOf(10);
        Float f = Float.valueOf("90");
        Integer b = Integer.valueOf("444", 16);   // 使用 16 进制
        System.out.println(i2);
        System.out.println(d);
        System.out.println(f);
        System.out.println(b);

        // toString() 以字符串形式返回值
        System.out.println(i1.toString());
        System.out.println(Integer.toString(12));

        // parseInt() 将字符串解析为int类型
        int i3 = Integer.parseInt("100");
        double c2 = Double.parseDouble("5");
        int i4 = Integer.parseInt("444", 16);
        System.out.println(i3);
        System.out.println(c2);
        System.out.println(i4);

        System.out.println("Number类");

        // min() 方法用于返回两个参数中的最小值。
        System.out.println(Math.min(10, 20));
        // max() 方法用于返回两个参数中的最大值。
        System.out.println(Math.max(3.6, 2.1));

    }
}
